using System.Runtime.InteropServices;

namespace WindowsAPI
{
    [StructLayout(LayoutKind.Sequential)]
    public struct SYSTEM_PERFORMANCE_INFORMATION
    {
        public long IdleProcessTime;
        public long IoReadTransferCount;
        public long IoWriteTransferCount;
        public long IoOtherTransferCount;
        public ulong IoReadOperationCount;
        public ulong IoWriteOperationCount;
        public ulong IoOtherOperationCount;
        public ulong AvailablePages;
        public ulong CommittedPages;
        public ulong CommitLimit;
        public ulong PeakCommitment;
        public ulong PageFaultCount;
        public ulong CopyOnWriteCount;
        public ulong TransitionCount;
        public ulong CacheTransitionCount;
        public ulong DemandZeroCount;
        public ulong PageReadCount;
        public ulong PageReadIoCount;
        public ulong CacheReadCount;
        public ulong CacheIoCount;
        public ulong DirtyPagesWriteCount;
        public ulong DirtyWriteIoCount;
        public ulong MappedPagesWriteCount;
        public ulong MappedWriteIoCount;
        public ulong PagedPoolPages;
        public ulong NonPagedPoolPages;
        public ulong PagedPoolAllocs;
        public ulong PagedPoolFrees;
        public ulong NonPagedPoolAllocs;
        public ulong NonPagedPoolFrees;
        public ulong FreeSystemPtes;
        public ulong ResidentSystemCodePage;
        public ulong TotalSystemDriverPages;
        public ulong TotalSystemCodePages;
        public ulong NonPagedPoolLookasideHits;
        public ulong PagedPoolLookasideHits;
        public ulong AvailablePagedPoolPages;
        public ulong ResidentSystemCachePage;
        public ulong ResidentPagedPoolPage;
        public ulong ResidentSystemDriverPage;
        public ulong CcFastReadNoWait;
        public ulong CcFastReadWait;
        public ulong CcFastReadResourceMiss;
        public ulong CcFastReadNotPossible;
        public ulong CcFastMdlReadNoWait;
        public ulong CcFastMdlReadWait;
        public ulong CcFastMdlReadResourceMiss;
        public ulong CcFastMdlReadNotPossible;
        public ulong CcMapDataNoWait;
        public ulong CcMapDataWait;
        public ulong CcMapDataNoWaitMiss;
        public ulong CcMapDataWaitMiss;
        public ulong CcPinMappedDataCount;
        public ulong CcPinReadNoWait;
        public ulong CcPinReadWait;
        public ulong CcPinReadNoWaitMiss;
        public ulong CcPinReadWaitMiss;
        public ulong CcCopyReadNoWait;
        public ulong CcCopyReadWait;
        public ulong CcCopyReadNoWaitMiss;
        public ulong CcCopyReadWaitMiss;
        public ulong CcMdlReadNoWait;
        public ulong CcMdlReadWait;
        public ulong CcMdlReadNoWaitMiss;
        public ulong CcMdlReadWaitMiss;
        public ulong CcReadAheadIos;
        public ulong CcLazyWriteIos;
        public ulong CcLazyWritePages;
        public ulong CcDataFlushes;
        public ulong CcDataPages;
        public ulong ContextSwitches;
        public ulong FirstLevelTbFills;
        public ulong SecondLevelTbFills;
        public ulong SystemCalls;
    }
}